#ifndef __INISAFEZONE_HH__
#define __INISAFEZONE_HH__
#include <string>

#include "motion/safezone.h"

class SafeZoneConfig
{
public:
    /**
     * 安全区域的全部参数读写
     * 包含：安全区域的生效模式、安全平面、安全球形、安全钻石形等所有安全空间相关的配置
    */
    static int loadSafeZone(const char* cfgfile, SafeZone& zone);
    static int saveSafeZone(const char* cfgfile, SafeZone zone);

    /**
     * 读写安全区域的开启模式
     * 包含：
     *      auto enable 执行程序时候安全区域生效
     *      open enable 使能时候安全区域生效
    */
    static int loadSafeZoneEnableMode(const char* cfgfile, int& enableMode);
    static int saveSafeZoneEnableMode(const char* cfgfile, int enableMode);

    /**
     * 读写安全区域的生效模式
     * 包含：
     *      mode : 0 安全平面生效进入停止模式
     *      mode : 1 安全平面生效进入保护性停止模式
     *      mode : 2 安全平面生效进入缩减模式
    */
    static int loadSafeZoneActiveMode(const char* cfgfile, int& activeMode);
    static int saveSafeZoneActiveMode(const char* cfgfile, int activeMode);

    /**
     * 读写安全平面的限制模式
     * 包含：
     *      任何时候安全区域都根据末端TCP位置进行运动限制
     *      可配置的增加安全区域根据肘部位置和腕部位置进行运动限制
    */
    static int loadSafeZoneLimitMode(const char* cfgfile, int& limitMode);
    static int saveSafeZoneLimitMode(const char* cfgfile, int limitMode);

    /**
     * 安全平面相关配置参数的读写
    */
    static int loadSafePlane(const char* cfgfile, SafePlane& safePlane);
    static int saveSafePlane(const char* cfgfile, SafePlane SafePlane);

    /**
     * ************************************************* *
     * 目前控制器仅有安全平面功能，没有其他形状安全区域相关接口 *
     * ************************************************* *
    */
};

#endif